W32: Detect ticks wraparound
authorРуслан Ижбулатов <lrn1986@gmail.com>
Wed, 22 Apr 2015 19:21:53 +0000 (19:21 +0000)
committerРуслан Ижбулатов <lrn1986@gmail.com>
Mon, 18 Jan 2016 09:23:44 +0000 (09:23 +0000)
https://bugzilla.gnome.org/show_bug.cgi?id=748327

gdk/win32/gdkevents-win32.c

index bb2a2dea1a2752828c30aef88ad9dc2fb453dc75..76398334b8a346c19bd5132c3c857fe98e55de49 100644 (file)
@@ -178,7 +178,9 @@ _gdk_win32_get_next_tick (gulong suggested_tick)
 
   if (suggested_tick == 0)
     suggested_tick = GetTickCount ();
-  if (suggested_tick <= cur_tick)
+  /* Ticks eventually wrap around.
+   * This works as long as the interval between ticks is < 2147483648ms */
+  if (suggested_tick <= cur_tick && ((cur_tick - suggested_tick) < 0x7FFFFFFF))
     return cur_tick;
   else
     return cur_tick = suggested_tick;